﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Dominio
{
    public interface IPersistencia
    {
        #region metodos

        void connectToDB();
        void add(object o);
        void update(object o);
        void delete(object o);
        void bringData(object o);
        List<object> bringList(object o);
        int bringLastOID(object o);
        void connect(string cadena);
        void disconnect();


        List<Articulo> buscarArticulos(int idDesde, int idHasta, 
            string codigo, string nombre, int stockDesde, int stockHasta, int iva);

        List<Articulo> traerArticulosNoHabilitados();

        Articulo buscarArticuloPorId(string id);

        List<Articulo> listarArticulosPorFecha(DateTime unaF);

        List<Articulo> listarArticulosPorCodigo(string desde, string hasta);

        List<Articulo> listarArticuloPorStock(int desde, int hasta);
        
        List<Cliente> buscarClientes(string nombre, double saldoDesde,
            double saldoHasta, string rut, int numeroDesde, int numeroHasta, int idPlanDePago,
            string unaDireccion);

        List<Cliente> traerClientesNoHabilitados();

        Cliente buscarClientePorId(int id);

        List<Cliente> listarClientesPorNumero(int desde, int hasta);

        List<Cliente> listarClientesPorNombre(string desde, string hasta);

        FacturaCredito buscarFacturaCreditoPorId(int id);

        List<FacturaCredito> listarFacturasPorVencimiento(DateTime desde, DateTime hasta);

        List<FacturaProveedor> listarFacturasProvPorVencimiento(DateTime desde, DateTime hasta);

        NotaCredito buscarNotaCreditoPorId(int id);

        NotaDebito buscarNotaDebitoPorId(int id);

        List<Proveedor> buscarProveedores(string nombre, double saldoDesde,
            double saldoHasta, string rut, int numeroDesde, int numeroHasta, int idPlanDePago,
            string unaDireccion);

        List<Proveedor> traerProveedoresNoHabilitados();

        Proveedor buscarProveedorPorId(int id);

        #endregion

    }
}
